#include "picbutton.h"

#include <QPixmap>
#include <QEvent>

// 对应的成员函数都写好了之后可以去 picshow.ui 文件里面去把对应的两个 QPushButton 都提升为当前的这个 PicShow 类的哦

PicButton::PicButton(QWidget *parent)
    : QPushButton(parent) {}

void PicButton::SetIcons(const QString &normal, const QString &hover, const QString &pressed)
{
    _normal = normal;
    _hover = hover;
    _pressed = pressed;

    // QPixmap 可以用来实现图片的头文件
    QPixmap tmpPixmap;
    tmpPixmap.load(normal);
    this->resize(tmpPixmap.size()); // 和图片的大小一致
    this->setIcon(QIcon(tmpPixmap));
    // 不使用 SetIcons 函数
    this->setIconSize(tmpPixmap.size());
}

void PicButton::setNormalIcon()
{
    QPixmap tmpPixmap;
    tmpPixmap.load(_normal);
    this->setIcon(QIcon(tmpPixmap));
}

void PicButton::setHoverIcon()
{
    QPixmap tmpPixmap;
    tmpPixmap.load(_hover);
    this->setIcon(QIcon(tmpPixmap));
}

void PicButton::setPressIcon()
{
    QPixmap tmpPixmap;
    tmpPixmap.load(_pressed);
    this->setIcon(QIcon(tmpPixmap));
}

// 设置悬浮，离开，点击时候的情况
bool PicButton::event(QEvent *e)
{
    switch(e->type()){
    case QEvent::Enter:
        setHoverIcon();
        break;
    case QEvent::Leave:
        setNormalIcon();
        break;
    case QEvent::MouseButtonPress:
        setPressIcon();
        break;
    case QEvent::MouseButtonRelease:
        setHoverIcon();
        break;
    default:
        // setNormalIcon();
        break;
    }

    return QPushButton::event(e); // 继续调用基类的虚函数
}



